import ReactDOM from 'react-dom';
import React from 'react';

import MatrixViewer from '../visual/MatrixViewer';
import TMatrix from './TMatrix';
import TArray from './TArray';

const TCommon={
  ////////////////////////////////////////////////////////////////// 数据操作
  // 加载数据集
  // 输入：数据集多维列表，标签字典（可选）
  // 数据集要求：
  // 数据集为二维矩阵文本数据
  // 前N-1列为特征，最后一列为标签；N为从列数
  // 输出：特征矩阵，标签列表
  loadDataset(dat, labelDict={}){
    let mat    = [];
    let labels = [];

    for(let i = 0, il = dat.length; i < il; i++){
      const label = dat[i][dat[i].length - 1];
      mat.push(dat[i].slice(0, dat[i].length - 1));
      if(label in labelDict){
        labels.push(labelDict[label]);
      }
      else{
        labels.push(label);
      }
    }

    return {"Mat":mat, "Labels":labels};
  },

  autoNorm(dataset){

    const mat = new TMatrix.Mat(dataset);

    let minVals = mat.min(0);
    let maxVals = mat.max(0);
    let ranges  = TMatrix.sub(maxVals, minVals);

    let normDataSet = new TMatrix.Mat(mat, mat.shape());
    normDataSet = TMatrix.sub(normDataSet, TMatrix.tile(minVals, [mat.rows(), 1]));
    normDataSet = TMatrix.division(normDataSet, TMatrix.tile(ranges, [mat.rows(), 1]));

    return normDataSet;
  }
}

export default TCommon;